<?php

/**
 * Created by Sven.
 * Date: 2016/12/29
 * Time: 9:34
 */
class LoginAction extends Action {

    public function __construct( $_tpl ) {
        $_model = new ManageModel();
        parent::__construct( $_tpl, $_model );
    }

    public function action() {
        if (isset($_GET['action'])){
            $_action = $_GET[ 'action' ];
            switch ( $_action ) {
                case 'logout':
                    $this->logout();
                    break;
                default:
                    $this->login();
                    break;
            }
        } else {
            $this->login();
        }
    }

    // 登录
    private function login() {
        if ( IS_POST ) {

            // 用户名不能为null
            if ( Validate::checkNull( $_POST[ 'admin_user' ] ) ) Tool::alertBack( '警告：用户名不能为空' );
            // 用户名长度2 20
            if ( Validate::checkMinLengh( $_POST[ 'admin_user' ], 2 ) ) Tool::alertBack( '警告：用户名不能小于2位' );
            if ( Validate::checkMaxLengh( $_POST[ 'admin_user' ], 20 ) ) Tool::alertBack( '警告：用户名不能大于20位' );

            // 密码不能为null
            if ( Validate::checkNull( $_POST[ 'admin_pass' ] ) ) Tool::alertBack( '警告：密码不能为空' );

            // 密码长度大于6
            if ( Validate::checkMinLengh( $_POST[ 'admin_pass' ], 6 ) ) Tool::alertBack( '警告：密码不能小于6位' );

            // 验证码不能为空
            if ( Validate::checkNull( $_POST[ 'code' ] ) ) Tool::alertBack( '警告：验证码不能为空' );
            // 验证码长度必须4位
            if ( Validate::checkEqualsLengh( $_POST[ 'code' ], 4 ) ) Tool::alertBack( '警告：验证码必须是4位' );

            // 验证码必须和session的一致
            if ( Validate::checkEquals( $_POST[ 'code' ], $_SESSION[ 'code' ], true ) ) Tool::alertBack( '警告：验证码错误' );


            // 用户名和密码
            $this->model->admin_user = $_POST[ 'admin_user' ];
            $this->model->admin_password = sha1( $_POST[ 'admin_pass' ] );

            $_result = $this->model->getLoginManage();

            if ( $_result != null && is_object( $_result ) ) {

                // 最好放在session前面，因为报错了就不会登陆了
                $this->model->id = $_result->id;
                $this->model->last_ip = $_SERVER[ 'REMOTE_ADDR' ];
                $this->model->setManageLogin();

                // 保存session
                $_SESSION[ 'admin' ][ 'id' ] = $_result->id;
                $_SESSION[ 'admin' ][ 'admin_user' ] = $_result->admin_user;
                $_SESSION[ 'admin' ][ 'level_name' ] = $_result->level_name;


                Tool::alertLocation( null, 'admin.php' );
            } else {
                Tool::alertBack( '用户名或者密码错误' );
            }

        } else {
            if ( isset($_SESSION['admin']) && !empty($_SESSION['admin']) ){
                Tool::alertLocSecurity('../admin/index.php');
            }

        }

    }

    // 退出
    private function logout() {
        // 清除session
        Tool::unSession();
        // 跳转
        Tool::alertLocSecurity( '../admin/login.php' );

    }

}